


Inheritance tree
----------------
Note: [abstract] denotes a class with pure virtual functions
      in it's virtual function table.
Note: Approximate best guess sizes are shown.
      See below for more details
----------------
UIElement			[0x18]
 Button				[0x18]  [abstract]
  CButton			[0xA4]  [abstract]
   MessageLogJumpTo		[0xA4]
   VehicleListJumpTo		[0xA4]
   ListScrollButton		[0xAC]
   LessMoreAssignResearch	[0xA4]
   LessMoreTrainScientists	[0xA4]
   LessMoreGameOption		[0xA4]
   MiniMapButton		[0xA4]
   ResetNetworkStats		[0xA4]
   LoadUnloadBay		[0xA8]
   UICommandButton		[0xAC]
   ViewButton			[0xAC]
    BuildButton			[0xAC]
    ReportPageButton		[0xB0]
 List				
  ???				[0x68]
----------------



UIElement
---------
Min Size: 0x18
Max Size: 
Size: 0x18
---------
0x0	4	vtbl
0x4	4	int flags
----
0x8	16	Rect position
 0x8	 4	 int x1
 0xC	 4	 int y1
 0x10	 4	 int x2
 0x14	 4	 int y2
---------



UIElement:Button
----------------
Note: Defines the Button virtual function table
Parent Size: 0x18
Min Size: 0x1C
Max Size: 0xA4
Size: 0x1C
---------
0x18	4	int hotKey
---------


UIElement:Button:CButton
------------------------
Note: Provides the shared implementation
Note: Maybe should have called this one GraphicalButton
Parent Size: 0x1C
Min Size: 0xA4
Max Size: 
Size: 0xA4
---------
0x1C	4	int buttonTextStringLength
0x20		
0x24	4	
0x28	4					[4]
...
---- [?]
0x84	0x20	ButtonDisplayInfo
 0x84	 4	 int animationIndex
 0x88	 2	 short normalFrameIndex		[0]
 0x8A	 2	 short activeFrameIndex		[1]
 0x8C	 2	 short disabledFrameIndex	[-1]
 0x8E	 2	 short ???FrameIndex		[ ** Figure this out ** ]
 0x90	 4	 char* helpText			["&" controls hot key]
 0x94	 4	 char* buttonText		["&" affects coloring]
 0x98	 4	 Font* font
 0x9C	 2	 				[0xFF00]	 
 0x9E	 2	 				[0]
 0xA0	 2	 				[0xFF]
 0xA2	 1	 				[2]
 ----
 0xA3	 1	padding?
---------



--------------------------------------
UIElement:Button:CButton:MessageLogJumpTo
UIElement:Button:CButton:VehicleListJumpTo
UIElement:Button:CButton:LessMoreAssignResearch
UIElement:Button:CButton:LessMoreTrainScientists
UIElement:Button:CButton:LessMoreGameOption
UIElement:Button:CButton:MiniMapButton
UIElement:Button:CButton:ResetNetworkStats
--------------------------------------
Parent Size: 0xA4
Min Size: 0xA4
Max Size: 
Size: 0xA4
---------
---------


UIElement:Button:CButton:ListScrollButton		
-----------------------------------------
Note: Maybe should have called this one differently
Parent Size: 0xA4
Min Size: 0xAC
Max Size: 0xAC
Size: 0xA4
---------
0xA4	4	Object* objectPointer
0xA8	4	Object::*Func() functionPointer
---------


UIElement:Button:CButton:LoadUnloadBay
--------------------------------------
Parent Size: 0xA4
Min Size: 0xA8
Max Size: 0xA8
Size: 0xA8
---------
0xA4	4	int bayNum
---------


UIElement:Button:CButton:UICommandButton
----------------------------------------
Parent Size: 0xA4
Min Size: 0xAC
Max Size: 0xAC
Size: 0xAC
---------
0xA4	4	DWORD commandParam
0xA8	4	UICommand* command
---------


UIElement:Button:CButton:ViewButton
-----------------------------------
Parent Size: 0xA4
Min Size: 0xAC
Max Size: 0xAC
Size: 0xAC
---------
0xA4	4	CommandPaneView* view
0xA8	4	bool bDeselectUnits
---------


UIElement:Button:CButton:ViewButton:BuildButton
-----------------------------------------------
Parent Size: 0xAC
Min Size: 0xAC
Max Size: 0xAC
Size: 0xAC
---------
---------


UIElement:Button:CButton:ViewButton:ReportPageButton
----------------------------------------------------
Parent Size: 0xAC
Min Size: 0xB0
Max Size: 0xB0
Size: 0xB0
---------
0xAC	4	int reportPageIndex
---------





UIElement:List
--------------
Parent Size: 0x18
Min Size: 0x58
Max Size: 0x68
Size: 0x58?
---------
0x18	4	
0x1C	4	int rowHeight?
0x20		
0x24	4	
0x28	4	int[]?* listItemIndex?
0x2C	4	
0x30	4	
0x34	2	
0x36	2	
0x38	4	
0x3C	4	DWORD lastClickTime	[milliseconds]
0x40	4	
----
0x44		
 0x44	 4	 
 0x48	 4	 Font* font
 0x4C	 4	 
 0x50	 	 
 0x52	 2	 short backColor
 0x54	 	 
---------


UIElement:List:???
------------------
Parent Size: 0x58?
Min Size: 0x64
Max Size: 0x68
Size: 0x68?
---------
0x58	4	
0x5C		
0x60	4	*???([ECX] ???, [EDX] ???)
---------



UIElement Flags
---------------
0x00000001  0xFFFFFFFE	bNeedRedraw	[or opposite?]
0x00000002  0xFFFFFFFD	bDisabled
0x00000004  0xFFFFFFFB	bAddedToWnd
0x00000008  0xFFFFFFF7	
0x00000010  0xFFFFFFEF	
0x00000020  0xFFFFFFDF	bHasFocus
0x00000040  0xFFFFFFBF	
0x00000080  0xFFFFFF7F	
0x00000100  0xFFFFFEFF	bSelected
0x00000200  0xFFFFFDFF	bHasHotKey

